#pragma once

#include <iostream>
#include <cmath>

// typedef long long int int;
// typedef double double;

// FIXME: 废弃以下函数，改用标准库 stoi, stod
extern "C" {
    inline double str_to_real(const char *s) {
        double tmp;
        sscanf(s, "%lf", &tmp);
        return tmp;
    }

    inline int str_to_int(const char *s) {
        int tmp;
        sscanf(s, "%d", &tmp);
        return tmp;
    }

    inline int pow_int(int x, int p) {
        int res = 1;
        while (p) {
            if (p & 1) res *= x;
            p >>= 1;
            x *= x;
        }
        return res;
    }

};


// TODO: 修改 yylval的类型 
#define YYSTYPE double 